package nsu.edu.zsq.bean;

import java.util.Date;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * Description: 管理员用户表
 */
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SysUser {
    /**
     *  id
     */
    private Integer id;

    /**
     * 用户姓名 username
     */
    private String username;

    /**
     * 密码 password
     */
    @NotBlank(message = "密码不能为空")
    @Pattern(regexp="^[\\S]{6,12}$", message="密码必须6到12位，且不能出现空格")
    private String password;

    /**
     * 账号 account
     */
    @NotBlank(message = "账号不能为空")
    private String account;

    /**
     * 邮箱 email
     */
    private String email;

    /**
     * 电话 phone
     */
    private String phone;

    /**
     * 管理员类型，0：超级管理员，1：其它，默认1 type
     */
    private Integer type;

    /**
     * 禁止访问的url，以";"分隔 ban_url
     */
    private String banUrl;

    /**
     * 操作者 operator
     */
    private String operator;

    /**
     * 操作时间 operator_time
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date operatorTime;

    /**
     * Get 
     * @return id 
     */
    public Integer getId() {
        return id;
    }

    /**
     * Set 
     * @param id 
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Get 用户姓名
     * @return username 用户姓名
     */
    public String getUsername() {
        return username;
    }

    /**
     * Set 用户姓名
     * @param username 用户姓名
     */
    public void setUsername(String username) {
        this.username = username == null ? null : username.trim();
    }

    /**
     * Get 密码
     * @return password 密码
     */
    public String getPassword() {
        return password;
    }

    /**
     * Set 密码
     * @param password 密码
     */
    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    /**
     * Get 账号
     * @return account 账号
     */
    public String getAccount() {
        return account;
    }

    /**
     * Set 账号
     * @param account 账号
     */
    public void setAccount(String account) {
        this.account = account == null ? null : account.trim();
    }

    /**
     * Get 邮箱
     * @return email 邮箱
     */
    public String getEmail() {
        return email;
    }

    /**
     * Set 邮箱
     * @param email 邮箱
     */
    public void setEmail(String email) {
        this.email = email == null ? null : email.trim();
    }

    /**
     * Get 电话
     * @return phone 电话
     */
    public String getPhone() {
        return phone;
    }

    /**
     * Set 电话
     * @param phone 电话
     */
    public void setPhone(String phone) {
        this.phone = phone == null ? null : phone.trim();
    }

    /**
     * Get 管理员类型，0：超级管理员，1：其它，默认1
     * @return type 管理员类型，0：超级管理员，1：其它，默认1
     */
    public Integer getType() {
        return type;
    }

    /**
     * Set 管理员类型，0：超级管理员，1：其它，默认1
     * @param type 管理员类型，0：超级管理员，1：其它，默认1
     */
    public void setType(Integer type) {
        this.type = type;
    }

    /**
     * Get 禁止访问的url，以";"分隔
     * @return ban_url 禁止访问的url，以";"分隔
     */
    public String getBanUrl() {
        return banUrl;
    }

    /**
     * Set 禁止访问的url，以";"分隔
     * @param banUrl 禁止访问的url，以";"分隔
     */
    public void setBanUrl(String banUrl) {
        this.banUrl = banUrl == null ? null : banUrl.trim();
    }

    /**
     * Get 操作者
     * @return operator 操作者
     */
    public String getOperator() {
        return operator;
    }

    /**
     * Set 操作者
     * @param operator 操作者
     */
    public void setOperator(String operator) {
        this.operator = operator == null ? null : operator.trim();
    }

    /**
     * Get 操作时间
     * @return operator_time 操作时间
     */
    public Date getOperatorTime() {
        return operatorTime;
    }

    /**
     * Set 操作时间
     * @param operatorTime 操作时间
     */
    public void setOperatorTime(Date operatorTime) {
        this.operatorTime = operatorTime;
    }
}